In the RENDERER_ONLY state proposal mode, we don't actually have a
viable configuration to test, because we won't get a renderer buffer
until after assign_planes - where we're called from - has completed.

This can result in us trying to test a configuration with the CRTC and
connectors active, but no planes active, which the kernel can
legitimately fail.

If we're working in renderer-only mode, just return the state we have
without trying to test it first, and let the kernel fill it in later.

Signed-off-by: Daniel Stone <[email protected]>
---
 libweston/compositor-drm.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c
index 98e6ff839..704ac32c7 100644
--- a/libweston/compositor-drm.c
+++ b/libweston/compositor-drm.c
@@ -3488,6 +3488,11 @@ drm_output_propose_state(struct weston_output 
*output_base,
        pixman_region32_fini(&renderer_region);
        pixman_region32_fini(&occluded_region);
 
+       /* In renderer-only mode, we can't test the state as we don't have a
+        * renderer buffer yet. */
+       if (mode == DRM_OUTPUT_PROPOSE_STATE_RENDERER_ONLY)
+               return state;
+
        /* Check to see if this state will actually work. */
        ret = drm_pending_state_test(state->pending_state);
        if (ret != 0)
-- 
2.17.1

_______________________________________________
wayland-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to