Hi Daniel, On Fri, Apr 26, 2024 at 12:17:33PM +0100, Daniel Stone wrote:
> One thing you can try is to edit > weston/libweston/backend-drm/state-propose.c and, inside > dmabuf_feedback_maybe_update(), prevent action_needed from ever being > set to ACTION_NEEDED_ADD_SCANOUT_TRANCHE. It would be interesting to > know if this restores full performance. Tried it. Same performance as before, so didn't solve the issue. I just removed the part of the code that set action_needed to ACTION_NEEDED_SCANOUT_TRANCHE. Regards, João Paulo Goncalves diff --git a/libweston/backend-drm/state-propose.c b/libweston/backend-drm/state-propose.c index 18a6d628..0ba23517 100644 --- a/libweston/backend-drm/state-propose.c +++ b/libweston/backend-drm/state-propose.c @@ -311,7 +311,9 @@ dmabuf_feedback_maybe_update(struct drm_device *device, struct weston_view *ev, action_needed = ACTION_NEEDED_REMOVE_SCANOUT_TRANCHE; /* Direct scanout may be possible if client re-allocates using the * params from the scanout tranche. */ - } else if (try_view_on_plane_failure_reasons & (FAILURE_REASONS_ADD_FB_FAILED | + } + #if 0 + else if (try_view_on_plane_failure_reasons & (FAILURE_REASONS_ADD_FB_FAILED | FAILURE_REASONS_FB_FORMAT_INCOMPATIBLE | FAILURE_REASONS_DMABUF_MODIFIER_INVALID | FAILURE_REASONS_GBM_BO_IMPORT_FAILED | @@ -321,6 +323,7 @@ dmabuf_feedback_maybe_update(struct drm_device *device, struct weston_view *ev, } else if (try_view_on_plane_failure_reasons == FAILURE_REASONS_NONE) { action_needed = ACTION_NEEDED_ADD_SCANOUT_TRANCHE; } + #endif /* No actions needed, so disarm timer and return */ if (action_needed == ACTION_NEEDED_NONE ||