Fullscreen video with GL overlay does not hit plane-only renderer on rk3399 - missing Wayland dmabuf scanout tranche
This issue might be hard to fix and the issue here is mostly for documentary purposes.
On the rk3399 (and likely similar devices) we currently don't send scanout tranches in certain situations where we should.
Primary example: a fullscreen video surface with a fullscreen GL overlay surface on top (seen in GTK4/Chromium etc.). Mesas Wayland EGL platform will create the overlay surface with ARM_AFBC
modifier (at least for supported resolutions), which is supported by the primary plane. The overlay planes, however, only support LINEAR
.
When attempting the state-only renderer, we'll detect the overlay surface as supported by a plane - the primary - and not set the FAILURE_REASONS_FB_FORMAT_INCOMPATIBLE
flag to trigger sending scanout tranches. The state-only algorithm will then place the surface/view on the primary and fail as it doesn't have a plane left to place the video surface on.
Optimally we'd find a way to enhance the algorithm to somehow detect cases like this. On newer hardware, the problem can probably avoided by more capable planes, either supporting the relevant modifiers - or underlay zpos support.
On the rk3399 a possible workaround is forcing LINEAR
for clients:
--- a/libweston/renderer-gl/gl-renderer.c
+++ b/libweston/renderer-gl/gl-renderer.c
@@ -3167,7 +3167,7 @@ populate_supported_formats(struct weston_compositor *ec,
for (j = 0; j < num_modifiers; j++) {
/* Skip MOD_INVALID, as it has already been added. */
- if (modifiers[j] == DRM_FORMAT_MOD_INVALID)
+ if (modifiers[j] != DRM_FORMAT_MOD_LINEAR)
continue;
ret = weston_drm_format_add_modifier(fmt, modifiers[j]);
if (ret < 0) {
drm_info (relevant part)
├───Plane 2
│ ├───Object ID: 38
│ ├───CRTCs: {1}
│ ├───Legacy info
│ │ ├───FB ID: 56
│ │ │ ├───Object ID: 56
│ │ │ ├───Size: 1920x1080
│ │ │ ├───Format: XRGB8888 (0x34325258)
│ │ │ ├───Modifier: ARM_AFBC(BLOCK_SIZE = 16x16, YTR, SPARSE) (0x800000000000051)
│ │ │ └───Planes:
│ │ │ └───Plane 0: offset = 0, pitch = 7680 bytes
│ │ └───Formats:
│ │ ├───XRGB8888 (0x34325258)
│ │ ├───ARGB8888 (0x34325241)
│ │ ├───XBGR8888 (0x34324258)
│ │ ├───ABGR8888 (0x34324241)
│ │ ├───RGB888 (0x34324752)
│ │ ├───BGR888 (0x34324742)
│ │ ├───RGB565 (0x36314752)
│ │ ├───BGR565 (0x36314742)
│ │ ├───NV12 (0x3231564e)
│ │ ├───NV21 (0x3132564e)
│ │ ├───NV16 (0x3631564e)
│ │ ├───NV61 (0x3136564e)
│ │ ├───NV24 (0x3432564e)
│ │ └───NV42 (0x3234564e)
│ └───Properties
│ ├───"type" (immutable): enum {Overlay, Primary, Cursor} = Primary
│ ├───"FB_ID" (atomic): object framebuffer = 56
│ │ ├───Object ID: 56
│ │ ├───Size: 1920x1080
│ │ ├───Format: XRGB8888 (0x34325258)
│ │ ├───Modifier: ARM_AFBC(BLOCK_SIZE = 16x16, YTR, SPARSE) (0x800000000000051)
│ │ └───Planes:
│ │ └───Plane 0: offset = 0, pitch = 7680 bytes
│ ├───"IN_FENCE_FD" (atomic): srange [-1, INT32_MAX] = -1
│ ├───"CRTC_ID" (atomic): object CRTC = 44
│ ├───"CRTC_X" (atomic): srange [INT32_MIN, INT32_MAX] = 0
│ ├───"CRTC_Y" (atomic): srange [INT32_MIN, INT32_MAX] = 0
│ ├───"CRTC_W" (atomic): range [0, INT32_MAX] = 1920
│ ├───"CRTC_H" (atomic): range [0, INT32_MAX] = 1080
│ ├───"SRC_X" (atomic): range [0, UINT32_MAX] = 0
│ ├───"SRC_Y" (atomic): range [0, UINT32_MAX] = 0
│ ├───"SRC_W" (atomic): range [0, UINT32_MAX] = 1920
│ ├───"SRC_H" (atomic): range [0, UINT32_MAX] = 1080
│ ├───"IN_FORMATS" (immutable): blob = 39
│ │ ├───ARM_AFBC(BLOCK_SIZE = 16x16, YTR, SPARSE) (0x800000000000051)
│ │ │ ├───XRGB8888 (0x34325258)
│ │ │ ├───ARGB8888 (0x34325241)
│ │ │ ├───XBGR8888 (0x34324258)
│ │ │ ├───ABGR8888 (0x34324241)
│ │ │ ├───RGB888 (0x34324752)
│ │ │ ├───BGR888 (0x34324742)
│ │ │ ├───RGB565 (0x36314752)
│ │ │ └───BGR565 (0x36314742)
│ │ └───DRM_FORMAT_MOD_LINEAR (0x0)
│ │ ├───XRGB8888 (0x34325258)
│ │ ├───ARGB8888 (0x34325241)
│ │ ├───XBGR8888 (0x34324258)
│ │ ├───ABGR8888 (0x34324241)
│ │ ├───RGB888 (0x34324752)
│ │ ├───BGR888 (0x34324742)
│ │ ├───RGB565 (0x36314752)
│ │ ├───BGR565 (0x36314742)
│ │ ├───NV12 (0x3231564e)
│ │ ├───NV21 (0x3132564e)
│ │ ├───NV16 (0x3631564e)
│ │ ├───NV61 (0x3136564e)
│ │ ├───NV24 (0x3432564e)
│ │ └───NV42 (0x3234564e)
│ └───"rotation": bitmask {rotate-0, reflect-x, reflect-y} = (rotate-0)
├───Plane 3
│ ├───Object ID: 41
│ ├───CRTCs: {1}
│ ├───Legacy info
│ │ ├───FB ID: 57
│ │ │ ├───Object ID: 57
│ │ │ ├───Size: 64x64
│ │ │ ├───Format: ARGB8888 (0x34325241)
│ │ │ ├───Modifier: DRM_FORMAT_MOD_LINEAR (0x0)
│ │ │ └───Planes:
│ │ │ └───Plane 0: offset = 0, pitch = 256 bytes
│ │ └───Formats:
│ │ ├───XRGB8888 (0x34325258)
│ │ ├───ARGB8888 (0x34325241)
│ │ ├───XBGR8888 (0x34324258)
│ │ ├───ABGR8888 (0x34324241)
│ │ ├───RGB888 (0x34324752)
│ │ ├───BGR888 (0x34324742)
│ │ ├───RGB565 (0x36314752)
│ │ └───BGR565 (0x36314742)
│ └───Properties
│ ├───"type" (immutable): enum {Overlay, Primary, Cursor} = Cursor
│ ├───"FB_ID" (atomic): object framebuffer = 57
│ │ ├───Object ID: 57
│ │ ├───Size: 64x64
│ │ ├───Format: ARGB8888 (0x34325241)
│ │ ├───Modifier: DRM_FORMAT_MOD_LINEAR (0x0)
│ │ └───Planes:
│ │ └───Plane 0: offset = 0, pitch = 256 bytes
│ ├───"IN_FENCE_FD" (atomic): srange [-1, INT32_MAX] = -1
│ ├───"CRTC_ID" (atomic): object CRTC = 44
│ ├───"CRTC_X" (atomic): srange [INT32_MIN, INT32_MAX] = 1797
│ ├───"CRTC_Y" (atomic): srange [INT32_MIN, INT32_MAX] = 114
│ ├───"CRTC_W" (atomic): range [0, INT32_MAX] = 64
│ ├───"CRTC_H" (atomic): range [0, INT32_MAX] = 64
│ ├───"SRC_X" (atomic): range [0, UINT32_MAX] = 0
│ ├───"SRC_Y" (atomic): range [0, UINT32_MAX] = 0
│ ├───"SRC_W" (atomic): range [0, UINT32_MAX] = 64
│ ├───"SRC_H" (atomic): range [0, UINT32_MAX] = 64
│ ├───"IN_FORMATS" (immutable): blob = 42
│ │ └───DRM_FORMAT_MOD_LINEAR (0x0)
│ │ ├───XRGB8888 (0x34325258)
│ │ ├───ARGB8888 (0x34325241)
│ │ ├───XBGR8888 (0x34324258)
│ │ ├───ABGR8888 (0x34324241)
│ │ ├───RGB888 (0x34324752)
│ │ ├───BGR888 (0x34324742)
│ │ ├───RGB565 (0x36314752)
│ │ └───BGR565 (0x36314742)
│ └───"rotation": bitmask {rotate-0, reflect-y} = (rotate-0)
├───Plane 4
│ ├───Object ID: 45
│ ├───CRTCs: {1}
│ ├───Legacy info
│ │ ├───FB ID: 0
│ │ └───Formats:
│ │ ├───XRGB8888 (0x34325258)
│ │ ├───ARGB8888 (0x34325241)
│ │ ├───XBGR8888 (0x34324258)
│ │ ├───ABGR8888 (0x34324241)
│ │ ├───RGB888 (0x34324752)
│ │ ├───BGR888 (0x34324742)
│ │ ├───RGB565 (0x36314752)
│ │ ├───BGR565 (0x36314742)
│ │ ├───NV12 (0x3231564e)
│ │ ├───NV21 (0x3132564e)
│ │ ├───NV16 (0x3631564e)
│ │ ├───NV61 (0x3136564e)
│ │ ├───NV24 (0x3432564e)
│ │ └───NV42 (0x3234564e)
│ └───Properties
│ ├───"type" (immutable): enum {Overlay, Primary, Cursor} = Overlay
│ ├───"FB_ID" (atomic): object framebuffer = 0
│ ├───"IN_FENCE_FD" (atomic): srange [-1, INT32_MAX] = -1
│ ├───"CRTC_ID" (atomic): object CRTC = 0
│ ├───"CRTC_X" (atomic): srange [INT32_MIN, INT32_MAX] = 0
│ ├───"CRTC_Y" (atomic): srange [INT32_MIN, INT32_MAX] = 0
│ ├───"CRTC_W" (atomic): range [0, INT32_MAX] = 0
│ ├───"CRTC_H" (atomic): range [0, INT32_MAX] = 0
│ ├───"SRC_X" (atomic): range [0, UINT32_MAX] = 0
│ ├───"SRC_Y" (atomic): range [0, UINT32_MAX] = 0
│ ├───"SRC_W" (atomic): range [0, UINT32_MAX] = 0
│ ├───"SRC_H" (atomic): range [0, UINT32_MAX] = 0
│ ├───"IN_FORMATS" (immutable): blob = 46
│ │ └───DRM_FORMAT_MOD_LINEAR (0x0)
│ │ ├───XRGB8888 (0x34325258)
│ │ ├───ARGB8888 (0x34325241)
│ │ ├───XBGR8888 (0x34324258)
│ │ ├───ABGR8888 (0x34324241)
│ │ ├───RGB888 (0x34324752)
│ │ ├───BGR888 (0x34324742)
│ │ ├───RGB565 (0x36314752)
│ │ ├───BGR565 (0x36314742)
│ │ ├───NV12 (0x3231564e)
│ │ ├───NV21 (0x3132564e)
│ │ ├───NV16 (0x3631564e)
│ │ ├───NV61 (0x3136564e)
│ │ ├───NV24 (0x3432564e)
│ │ └───NV42 (0x3234564e)
│ └───"rotation": bitmask {rotate-0, reflect-x, reflect-y} = (rotate-0)
└───Plane 5
├───Object ID: 48
├───CRTCs: {1}
├───Legacy info
│ ├───FB ID: 0
│ └───Formats:
│ ├───XRGB8888 (0x34325258)
│ ├───ARGB8888 (0x34325241)
│ ├───XBGR8888 (0x34324258)
│ ├───ABGR8888 (0x34324241)
│ ├───RGB888 (0x34324752)
│ ├───BGR888 (0x34324742)
│ ├───RGB565 (0x36314752)
│ └───BGR565 (0x36314742)
└───Properties
├───"type" (immutable): enum {Overlay, Primary, Cursor} = Overlay
├───"FB_ID" (atomic): object framebuffer = 0
├───"IN_FENCE_FD" (atomic): srange [-1, INT32_MAX] = -1
├───"CRTC_ID" (atomic): object CRTC = 0
├───"CRTC_X" (atomic): srange [INT32_MIN, INT32_MAX] = 0
├───"CRTC_Y" (atomic): srange [INT32_MIN, INT32_MAX] = 0
├───"CRTC_W" (atomic): range [0, INT32_MAX] = 0
├───"CRTC_H" (atomic): range [0, INT32_MAX] = 0
├───"SRC_X" (atomic): range [0, UINT32_MAX] = 0
├───"SRC_Y" (atomic): range [0, UINT32_MAX] = 0
├───"SRC_W" (atomic): range [0, UINT32_MAX] = 0
├───"SRC_H" (atomic): range [0, UINT32_MAX] = 0
├───"IN_FORMATS" (immutable): blob = 49
│ └───DRM_FORMAT_MOD_LINEAR (0x0)
│ ├───XRGB8888 (0x34325258)
│ ├───ARGB8888 (0x34325241)
│ ├───XBGR8888 (0x34324258)
│ ├───ABGR8888 (0x34324241)
│ ├───RGB888 (0x34324752)
│ ├───BGR888 (0x34324742)
│ ├───RGB565 (0x36314752)
│ └───BGR565 (0x36314742)
└───"rotation": bitmask {rotate-0, reflect-y} = (rotate-0)
weston-debug drm-backend example
[repaint] Beginning repaint; pending_state 0xaaaaf7676950
Weston scene graph at 52359.000338386:
Output 0 (eDP-1):
position: (0, 0) -> (1920, 1080)
mode: 1920x1080@60.000Hz
scale: 1
repaint status: repaint scheduled
next repaint: 52359.000450666
Head 0 (eDP-1): connected
Layer 0 (pos 0xffffffff):
[no views]
Layer 1 (pos 0xfffffffe):
View 0 (role wl_pointer-cursor, PID 17069, surface ID 19, cursor, 0xaaaaf77dae90):
position: (685, 616) -> (709, 640)
[not opaque]
outputs: 0 (eDP-1) (primary)
SHM buffer
[2 references may use buffer content]
format: 0x34325241 ARGB8888
modifier: LINEAR (0x0)
width: 24, height: 24
Layer 2 (pos 0xdfffffff):
[no views]
Layer 3 (pos 0xb0000000):
View 0 (role xdg_toplevel, PID 17069, surface ID 8, top-level window 'Video Player' of gtk4-demo, 0xaaaaf77d7070):
position: (0, 0) -> (1920, 1080)
[not opaque]
outputs: 0 (eDP-1) (primary)
dmabuf buffer
[2 references may use buffer content]
format: 0x34325241 ARGB8888
modifier: ARM_BLOCK_SIZE=16x16,MODE=YTR|SPARSE (0x800000000000051)
width: 1920, height: 1080
View 1 (role wl_subsurface, PID 17069, surface ID 27, sub-surface, 0xaaaaf77d7c50):
[view is under parent view layer]
position: (0, 0) -> (1920, 1080)
[fully opaque]
outputs: 0 (eDP-1) (primary)
dmabuf buffer
[2 references may use buffer content]
format: 0x3231564e NV12
modifier: LINEAR (0x0)
width: 3840, height: 2160
View 2 (role (null), PID 0, surface ID 0, black background surface for top-level window 'Video Player' of gtk4-demo, 0xaaaaf77de3f0):
position: (0, 0) -> (1920, 1080)
[fully opaque]
outputs: 0 (eDP-1) (primary)
solid-colour buffer
[R 0.000000, G 0.000000, B 0.000000, A 1.000000]
[2 references may use buffer content]
format: 0x34325258 XRGB8888
modifier: LINEAR (0x0)
width: 1, height: 1
Layer 4 (pos 0x80000000):
View 0 (role (null), PID 17042, surface ID 17, panel for output eDP-1, 0xaaaaf75f4db0):
position: (0, 0) -> (1920, 32)
[not opaque]
outputs: 0 (eDP-1) (primary)
SHM buffer
[buffer has been released to client]
format: 0x34325241 ARGB8888
modifier: LINEAR (0x0)
width: 1920, height: 32
Layer 5 (pos 0x50000000):
View 0 (role xdg_toplevel, PID 17062, surface ID 15, top-level window 'test@pinebook-pro:~' of org.freedesktop.weston.wayland-terminal, 0xaaaaf77cba40):
position: (397, 266) -> (1203, 847)
[opaque: (432, 301) -> (1168, 812)]
outputs: 0 (eDP-1) (primary)
SHM buffer
[buffer has been released to client]
format: 0x34325241 ARGB8888
modifier: LINEAR (0x0)
width: 806, height: 581
Layer 6 (pos 0x2):
View 0 (role (null), PID 17042, surface ID 18, background for output eDP-1, 0xaaaaf75e55d0):
position: (0, 0) -> (1920, 1080)
[fully opaque]
outputs: 0 (eDP-1) (primary)
SHM buffer
[buffer has been released to client]
format: 0x34325241 ARGB8888
modifier: LINEAR (0x0)
width: 1920, height: 1080
[repaint] preparing state for output eDP-1 (0)
[repaint] trying planes-only build state
[view] evaluating view 0xaaaaf77dae90 for output eDP-1 (0)
[plane] started with zpos 18446744073709551615
[plane] plane 41 picked from candidate list, type: cursor
[cursor] provisionally assigned view 0xaaaaf77dae90 to cursor
[view] view 0xaaaaf77dae90 has been placed to cursor plane with computed zpos 4
[plane] next zpos to use 4
[view] evaluating view 0xaaaaf77d7070 for output eDP-1 (0)
[plane] started with zpos 4
[plane] plane 38 picked from candidate list, type: primary
[view] provisionally placing view 0xaaaaf77d7070 on plane 38
[view] view 0xaaaaf77d7070 has been placed to primary plane with computed zpos 0
[plane] next zpos to use 0
[view] evaluating view 0xaaaaf77d7c50 for output eDP-1 (0)
[plane] started with zpos 0
[overlay] not placing view on overlay: no free overlay planes matching format NV12 (0x3231564e) modifier 0x0
[view] view 0xaaaaf77d7c50 format: NV12
[plane] not trying plane 45: plane's minimum zpos (2) above current lowest zpos (0)
[plane] not trying plane 38: another view already assigned
[view] failing state generation: placing view 0xaaaaf77d7c50 to renderer not allowed
[repaint] could not build planes-only state, trying mixed
[state] using renderer FB ID 60 for mixed mode for output eDP-1 (0)
[state] scanout will use for zpos 0
[view] evaluating view 0xaaaaf77dae90 for output eDP-1 (0)
[plane] started with zpos 18446744073709551615
[plane] plane 41 picked from candidate list, type: cursor
[cursor] provisionally assigned view 0xaaaaf77dae90 to cursor
[view] view 0xaaaaf77dae90 has been placed to cursor plane with computed zpos 4
[plane] next zpos to use 4
[view] evaluating view 0xaaaaf77d7070 for output eDP-1 (0)
[plane] started with zpos 4
[view] view 0xaaaaf77d7070 will be placed on the renderer
[view] evaluating view 0xaaaaf77d7c50 for output eDP-1 (0)
[view] not assigning view 0xaaaaf77d7c50 to plane (occluded by renderer views)
[view] view 0xaaaaf77d7c50 will be placed on the renderer
[view] evaluating view 0xaaaaf77de3f0 for output eDP-1 (0)
[view] ignoring view 0xaaaaf77de3f0 (occluded on our output)
[view] evaluating view 0xaaaaf75f4db0 for output eDP-1 (0)
[view] ignoring view 0xaaaaf75f4db0 (occluded on our output)
[view] evaluating view 0xaaaaf77cba40 for output eDP-1 (0)
[view] ignoring view 0xaaaaf77cba40 (occluded on our output)
[view] evaluating view 0xaaaaf75e55d0 for output eDP-1 (0)
[view] ignoring view 0xaaaaf75e55d0 (occluded on our output)
[atomic] testing output 0 (eDP-1) state
[CRTC:44] 23 (MODE_ID) -> 61 (0x3d)
[CRTC:44] 22 (ACTIVE) -> 1 (0x1)
[CRTC:44] 28 (GAMMA_LUT) -> 0 (0x0)
[CRTC:44] 24 (VRR_ENABLED) -> 0 (0x0)
[CONN:52] 20 (CRTC_ID) -> 44 (0x2c)
[PLANE:38] 17 (FB_ID) -> 60 (0x3c)
[PLANE:38] 20 (CRTC_ID) -> 44 (0x2c)
[PLANE:38] 9 (SRC_X) -> 0 (0x0)
[PLANE:38] 10 (SRC_Y) -> 0 (0x0)
[PLANE:38] 11 (SRC_W) -> 125829120 (0x7800000)
[PLANE:38] 12 (SRC_H) -> 70778880 (0x4380000)
[PLANE:38] 13 (CRTC_X) -> 0 (0x0)
[PLANE:38] 14 (CRTC_Y) -> 0 (0x0)
[PLANE:38] 15 (CRTC_W) -> 1920 (0x780)
[PLANE:38] 16 (CRTC_H) -> 1080 (0x438)
[PLANE:38] FORMAT: XRGB8888
[PLANE:38] 40 (rotation) -> 1 (0x1)
[PLANE:41] 17 (FB_ID) -> 58 (0x3a)
[PLANE:41] 20 (CRTC_ID) -> 44 (0x2c)
[PLANE:41] 9 (SRC_X) -> 0 (0x0)
[PLANE:41] 10 (SRC_Y) -> 0 (0x0)
[PLANE:41] 11 (SRC_W) -> 4194304 (0x400000)
[PLANE:41] 12 (SRC_H) -> 4194304 (0x400000)
[PLANE:41] 13 (CRTC_X) -> 685 (0x2ad)
[PLANE:41] 14 (CRTC_Y) -> 616 (0x268)
[PLANE:41] 15 (CRTC_W) -> 64 (0x40)
[PLANE:41] 16 (CRTC_H) -> 64 (0x40)
[PLANE:41] FORMAT: ARGB8888
[PLANE:41] 43 (rotation) -> 1 (0x1)
[atomic] drmModeAtomicCommit
[repaint] Using mixed state composition
[repaint] view 0xaaaaf77dae90 on Cursor plane 41
[repaint] Need to update and resend the dma-buf feedback for surface of view 0xaaaaf77d7070
[repaint] view 0xaaaaf77d7070 using renderer composition
[repaint] view 0xaaaaf77d7c50 using renderer composition
[repaint] view 0xaaaaf77de3f0 using renderer composition
[repaint] view 0xaaaaf75f4db0 using renderer composition
[repaint] view 0xaaaaf77cba40 using renderer composition
[repaint] view 0xaaaaf75e55d0 using renderer composition
[atomic] applying output 0 (eDP-1) state
[CRTC:44] 23 (MODE_ID) -> 61 (0x3d)
[CRTC:44] 22 (ACTIVE) -> 1 (0x1)
[CRTC:44] 28 (GAMMA_LUT) -> 0 (0x0)
[CRTC:44] 24 (VRR_ENABLED) -> 0 (0x0)
[CONN:52] 20 (CRTC_ID) -> 44 (0x2c)
[PLANE:38] 17 (FB_ID) -> 55 (0x37)
[PLANE:38] 20 (CRTC_ID) -> 44 (0x2c)
[PLANE:38] 9 (SRC_X) -> 0 (0x0)
[PLANE:38] 10 (SRC_Y) -> 0 (0x0)
[PLANE:38] 11 (SRC_W) -> 125829120 (0x7800000)
[PLANE:38] 12 (SRC_H) -> 70778880 (0x4380000)
[PLANE:38] 13 (CRTC_X) -> 0 (0x0)
[PLANE:38] 14 (CRTC_Y) -> 0 (0x0)
[PLANE:38] 15 (CRTC_W) -> 1920 (0x780)
[PLANE:38] 16 (CRTC_H) -> 1080 (0x438)
[PLANE:38] FORMAT: XRGB8888
[PLANE:38] 40 (rotation) -> 1 (0x1)
[PLANE:41] 17 (FB_ID) -> 59 (0x3b)
[PLANE:41] 20 (CRTC_ID) -> 44 (0x2c)
[PLANE:41] 9 (SRC_X) -> 0 (0x0)
[PLANE:41] 10 (SRC_Y) -> 0 (0x0)
[PLANE:41] 11 (SRC_W) -> 4194304 (0x400000)
[PLANE:41] 12 (SRC_H) -> 4194304 (0x400000)
[PLANE:41] 13 (CRTC_X) -> 685 (0x2ad)
[PLANE:41] 14 (CRTC_Y) -> 616 (0x268)
[PLANE:41] 15 (CRTC_W) -> 64 (0x40)
[PLANE:41] 16 (CRTC_H) -> 64 (0x40)
[PLANE:41] FORMAT: ARGB8888
[PLANE:41] 43 (rotation) -> 1 (0x1)
[atomic] drmModeAtomicCommit
[CRTC:44] setting pending flip
[repaint] flushed pending_state 0xaaaaf7676950
weston-debug drm-backend example (with workaround)
Weston scene graph at 52826.781324700:
Output 0 (eDP-1):
position: (0, 0) -> (1920, 1080)
mode: 1920x1080@60.000Hz
scale: 1
repaint status: repaint scheduled
next repaint: 52826.781404666
Head 0 (eDP-1): connected
Layer 0 (pos 0xffffffff):
[no views]
Layer 1 (pos 0xfffffffe):
View 0 (role wl_pointer-cursor, PID 17300, surface ID 19, cursor, 0xaaaae63d5320):
position: (618, 462) -> (642, 486)
[not opaque]
outputs: 0 (eDP-1) (primary)
SHM buffer
[2 references may use buffer content]
format: 0x34325241 ARGB8888
modifier: LINEAR (0x0)
width: 24, height: 24
Layer 2 (pos 0xdfffffff):
[no views]
Layer 3 (pos 0xb0000000):
View 0 (role xdg_toplevel, PID 17300, surface ID 8, top-level window 'Video Player' of gtk4-demo, 0xaaaae63d28e0):
position: (0, 0) -> (1920, 1080)
[not opaque]
outputs: 0 (eDP-1) (primary)
dmabuf buffer
[3 references may use buffer content]
format: 0x34325241 ARGB8888
modifier: LINEAR (0x0)
width: 1920, height: 1080
View 1 (role wl_subsurface, PID 17300, surface ID 27, sub-surface, 0xaaaae63d34c0):
[view is under parent view layer]
position: (0, 0) -> (1920, 1080)
[fully opaque]
outputs: 0 (eDP-1) (primary)
dmabuf buffer
[2 references may use buffer content]
format: 0x3231564e NV12
modifier: LINEAR (0x0)
width: 3840, height: 2160
View 2 (role (null), PID 0, surface ID 0, black background surface for top-level window 'Video Player' of gtk4-demo, 0xaaaae63d8be0):
position: (0, 0) -> (1920, 1080)
[fully opaque]
outputs: 0 (eDP-1) (primary)
solid-colour buffer
[R 0.000000, G 0.000000, B 0.000000, A 1.000000]
[2 references may use buffer content]
format: 0x34325258 XRGB8888
modifier: LINEAR (0x0)
width: 1, height: 1
Layer 4 (pos 0x80000000):
View 0 (role (null), PID 17259, surface ID 17, panel for output eDP-1, 0xaaaae6200160):
position: (0, 0) -> (1920, 32)
[not opaque]
outputs: 0 (eDP-1) (primary)
SHM buffer
[buffer has been released to client]
format: 0x34325241 ARGB8888
modifier: LINEAR (0x0)
width: 1920, height: 32
Layer 5 (pos 0x50000000):
View 0 (role xdg_toplevel, PID 17293, surface ID 15, top-level window 'test@pinebook-pro:~' of org.freedesktop.weston.wayland-terminal, 0xaaaae63c7b60):
position: (397, 266) -> (1203, 847)
[opaque: (432, 301) -> (1168, 812)]
outputs: 0 (eDP-1) (primary)
SHM buffer
[buffer has been released to client]
format: 0x34325241 ARGB8888
modifier: LINEAR (0x0)
width: 806, height: 581
Layer 6 (pos 0x2):
View 0 (role (null), PID 17259, surface ID 18, background for output eDP-1, 0xaaaae61efc40):
position: (0, 0) -> (1920, 1080)
[fully opaque]
outputs: 0 (eDP-1) (primary)
SHM buffer
[buffer has been released to client]
format: 0x34325241 ARGB8888
modifier: LINEAR (0x0)
width: 1920, height: 1080
[repaint] preparing state for output eDP-1 (0)
[repaint] trying planes-only build state
[view] evaluating view 0xaaaae63d5320 for output eDP-1 (0)
[plane] started with zpos 18446744073709551615
[plane] plane 41 picked from candidate list, type: cursor
[cursor] provisionally assigned view 0xaaaae63d5320 to cursor
[view] view 0xaaaae63d5320 has been placed to cursor plane with computed zpos 4
[plane] next zpos to use 4
[view] evaluating view 0xaaaae63d28e0 for output eDP-1 (0)
[plane] started with zpos 4
[plane] plane 45 picked from candidate list, type: overlay
[view] provisionally placing view 0xaaaae63d28e0 on plane 45
[view] view 0xaaaae63d28e0 has been placed to overlay plane with computed zpos 2
[plane] next zpos to use 2
[view] evaluating view 0xaaaae63d34c0 for output eDP-1 (0)
[plane] started with zpos 2
[overlay] not placing view on overlay: no free overlay planes matching format NV12 (0x3231564e) modifier 0x0
[view] view 0xaaaae63d34c0 format: NV12
[plane] plane 38 picked from candidate list, type: primary
[view] provisionally placing view 0xaaaae63d34c0 on plane 38
[view] view 0xaaaae63d34c0 has been placed to primary plane with computed zpos 0
[plane] next zpos to use 0
[view] evaluating view 0xaaaae63d8be0 for output eDP-1 (0)
[view] ignoring view 0xaaaae63d8be0 (occluded on our output)
[view] evaluating view 0xaaaae6200160 for output eDP-1 (0)
[view] ignoring view 0xaaaae6200160 (occluded on our output)
[view] evaluating view 0xaaaae63c7b60 for output eDP-1 (0)
[view] ignoring view 0xaaaae63c7b60 (occluded on our output)
[view] evaluating view 0xaaaae61efc40 for output eDP-1 (0)
[view] ignoring view 0xaaaae61efc40 (occluded on our output)
[atomic] testing output 0 (eDP-1) state
[CRTC:44] 23 (MODE_ID) -> 60 (0x3c)
[CRTC:44] 22 (ACTIVE) -> 1 (0x1)
[CRTC:44] 28 (GAMMA_LUT) -> 0 (0x0)
[CRTC:44] 24 (VRR_ENABLED) -> 0 (0x0)
[CONN:52] 20 (CRTC_ID) -> 44 (0x2c)
[PLANE:41] 17 (FB_ID) -> 57 (0x39)
[PLANE:41] 20 (CRTC_ID) -> 44 (0x2c)
[PLANE:41] 9 (SRC_X) -> 0 (0x0)
[PLANE:41] 10 (SRC_Y) -> 0 (0x0)
[PLANE:41] 11 (SRC_W) -> 4194304 (0x400000)
[PLANE:41] 12 (SRC_H) -> 4194304 (0x400000)
[PLANE:41] 13 (CRTC_X) -> 618 (0x26a)
[PLANE:41] 14 (CRTC_Y) -> 462 (0x1ce)
[PLANE:41] 15 (CRTC_W) -> 64 (0x40)
[PLANE:41] 16 (CRTC_H) -> 64 (0x40)
[PLANE:41] FORMAT: ARGB8888
[PLANE:41] 43 (rotation) -> 1 (0x1)
[PLANE:38] 17 (FB_ID) -> 64 (0x40)
[PLANE:38] 20 (CRTC_ID) -> 44 (0x2c)
[PLANE:38] 9 (SRC_X) -> 0 (0x0)
[PLANE:38] 10 (SRC_Y) -> 0 (0x0)
[PLANE:38] 11 (SRC_W) -> 251658240 (0xf000000)
[PLANE:38] 12 (SRC_H) -> 141557760 (0x8700000)
[PLANE:38] 13 (CRTC_X) -> 0 (0x0)
[PLANE:38] 14 (CRTC_Y) -> 0 (0x0)
[PLANE:38] 15 (CRTC_W) -> 1920 (0x780)
[PLANE:38] 16 (CRTC_H) -> 1080 (0x438)
[PLANE:38] FORMAT: NV12
[PLANE:38] 40 (rotation) -> 1 (0x1)
[PLANE:45] 17 (FB_ID) -> 61 (0x3d)
[PLANE:45] 20 (CRTC_ID) -> 44 (0x2c)
[PLANE:45] 9 (SRC_X) -> 0 (0x0)
[PLANE:45] 10 (SRC_Y) -> 0 (0x0)
[PLANE:45] 11 (SRC_W) -> 125829120 (0x7800000)
[PLANE:45] 12 (SRC_H) -> 70778880 (0x4380000)
[PLANE:45] 13 (CRTC_X) -> 0 (0x0)
[PLANE:45] 14 (CRTC_Y) -> 0 (0x0)
[PLANE:45] 15 (CRTC_W) -> 1920 (0x780)
[PLANE:45] 16 (CRTC_H) -> 1080 (0x438)
[PLANE:45] FORMAT: ARGB8888
[PLANE:45] 47 (rotation) -> 1 (0x1)
[atomic] drmModeAtomicCommit
[repaint] Using plane-only state composition
[repaint] view 0xaaaae63d5320 on Cursor plane 41
[repaint] view 0xaaaae63d28e0 on Overlay plane 45
[repaint] view 0xaaaae63d34c0 on Primary plane 38
[repaint] view 0xaaaae63d8be0 using renderer composition
[repaint] view 0xaaaae6200160 using renderer composition
[repaint] view 0xaaaae63c7b60 using renderer composition
[repaint] view 0xaaaae61efc40 using renderer composition
[atomic] applying output 0 (eDP-1) state
[CRTC:44] 23 (MODE_ID) -> 60 (0x3c)
[CRTC:44] 22 (ACTIVE) -> 1 (0x1)
[CRTC:44] 28 (GAMMA_LUT) -> 0 (0x0)
[CRTC:44] 24 (VRR_ENABLED) -> 0 (0x0)
[CONN:52] 20 (CRTC_ID) -> 44 (0x2c)
[PLANE:41] 17 (FB_ID) -> 57 (0x39)
[PLANE:41] 20 (CRTC_ID) -> 44 (0x2c)
[PLANE:41] 9 (SRC_X) -> 0 (0x0)
[PLANE:41] 10 (SRC_Y) -> 0 (0x0)
[PLANE:41] 11 (SRC_W) -> 4194304 (0x400000)
[PLANE:41] 12 (SRC_H) -> 4194304 (0x400000)
[PLANE:41] 13 (CRTC_X) -> 618 (0x26a)
[PLANE:41] 14 (CRTC_Y) -> 462 (0x1ce)
[PLANE:41] 15 (CRTC_W) -> 64 (0x40)
[PLANE:41] 16 (CRTC_H) -> 64 (0x40)
[PLANE:41] FORMAT: ARGB8888
[PLANE:41] 43 (rotation) -> 1 (0x1)
[PLANE:38] 17 (FB_ID) -> 64 (0x40)
[PLANE:38] 20 (CRTC_ID) -> 44 (0x2c)
[PLANE:38] 9 (SRC_X) -> 0 (0x0)
[PLANE:38] 10 (SRC_Y) -> 0 (0x0)
[PLANE:38] 11 (SRC_W) -> 251658240 (0xf000000)
[PLANE:38] 12 (SRC_H) -> 141557760 (0x8700000)
[PLANE:38] 13 (CRTC_X) -> 0 (0x0)
[PLANE:38] 14 (CRTC_Y) -> 0 (0x0)
[PLANE:38] 15 (CRTC_W) -> 1920 (0x780)
[PLANE:38] 16 (CRTC_H) -> 1080 (0x438)
[PLANE:38] FORMAT: NV12
[PLANE:38] 40 (rotation) -> 1 (0x1)
[PLANE:45] 17 (FB_ID) -> 61 (0x3d)
[PLANE:45] 20 (CRTC_ID) -> 44 (0x2c)
[PLANE:45] 9 (SRC_X) -> 0 (0x0)
[PLANE:45] 10 (SRC_Y) -> 0 (0x0)
[PLANE:45] 11 (SRC_W) -> 125829120 (0x7800000)
[PLANE:45] 12 (SRC_H) -> 70778880 (0x4380000)
[PLANE:45] 13 (CRTC_X) -> 0 (0x0)
[PLANE:45] 14 (CRTC_Y) -> 0 (0x0)
[PLANE:45] 15 (CRTC_W) -> 1920 (0x780)
[PLANE:45] 16 (CRTC_H) -> 1080 (0x438)
[PLANE:45] FORMAT: ARGB8888
[PLANE:45] 47 (rotation) -> 1 (0x1)
[atomic] drmModeAtomicCommit
[CRTC:44] setting pending flip
[repaint] flushed pending_state 0xaaaae63d5a40
Related: