Merge pull request #1537 from VincentVanlaer/cursor-dmabuf-nouveau

Add workaround for hardware cursors on nouveau
This commit is contained in:
Drew DeVault 2019-02-15 16:07:50 +01:00 committed by GitHub
commit 2d2c79e37c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 9 additions and 0 deletions

View File

@ -725,6 +725,15 @@ static bool drm_connector_set_cursor(struct wlr_output *output,
bo = copy_drm_surface_mgpu(&plane->mgpu_surf, plane->surf.back); bo = copy_drm_surface_mgpu(&plane->mgpu_surf, plane->surf.back);
} }
if (bo) {
// workaround for nouveau
// Buffers created with GBM_BO_USER_LINEAR are placed in NOUVEAU_GEM_DOMAIN_GART.
// When the bo is attached to the cursor plane it is moved to NOUVEAU_GEM_DOMAIN_VRAM.
// However, this does not wait for the render operations to complete, leaving an empty surface.
// see https://bugs.freedesktop.org/show_bug.cgi?id=109631
// The render operations can be waited for using:
glFinish();
}
bool ok = drm->iface->crtc_set_cursor(drm, crtc, bo); bool ok = drm->iface->crtc_set_cursor(drm, crtc, bo);
if (ok) { if (ok) {
wlr_output_update_needs_swap(output); wlr_output_update_needs_swap(output);