ozone: drm: Hold onto modeset framebuffer until first page flip
Since bb1059e5 ("ozone: drm: Clean up error handling around page flips") we only keep one set of framebuffers alive for a group of crtcs that are mirroring (i.e., they should always be showing the same framebuffer). It turns out it is not true that mirrors always show the same buffer; when we modeset a crtc on entering mirror mode, we may allocate a new framebuffer for that purpose and only set that framebuffer on one of the crtcs. Until the first page flip, the two crtcs will show different images. To avoid a crash when we try to page flip, go back to keeping a modeset buffer for each CRTC. This crash only happens if we have to allocate a new buffer for modesettings; in some circumstances, we're able to reuse a buffer and there's no crash. Bug: 888553, b/117854747, b/117863342, b/117631111 Test: ozone_unittests; boot grunt with two hardware mirrored displays Change-Id: Ib903e00a8975aac16e40ed685b809bbba8bb9124 Reviewed-on: https://chromium-review.googlesource.com/c/1302110 Commit-Queue: Michael Spang <spang@chromium.org> Reviewed-by:Daniel Nicoara <dnicoara@chromium.org> Cr-Commit-Position: refs/heads/master@{#603224}
Showing
Please register or sign in to comment