sna: Switch off old outputs on topology changes
The kernel may keep the old connector id around so that userspace can gracefully switch it off, which means that on detecting a topology change (a new id for an old connector path), we must do a SetCRTC to release the old resources. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106250 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
985553dff9
commit
c37c7ee074
|
|
@ -5254,6 +5254,20 @@ sna_output_add(struct sna *sna, unsigned id, unsigned serial)
|
|||
if (strcmp(output->name, name) == 0) {
|
||||
assert(output->scrn == scrn);
|
||||
assert(output->funcs == &sna_output_funcs);
|
||||
|
||||
/*
|
||||
* If the old output is still in use, tell
|
||||
* the kernel to switch it off so we can
|
||||
* move its resources over to the new id.
|
||||
*/
|
||||
if (output->crtc) {
|
||||
struct drm_mode_crtc arg = {
|
||||
.crtc_id = __sna_crtc_id(to_sna_crtc(output->crtc)),
|
||||
};
|
||||
drmIoctl(sna->kgem.fd, DRM_IOCTL_MODE_SETCRTC, &arg);
|
||||
output->crtc = NULL;
|
||||
}
|
||||
|
||||
sna_output_destroy(output);
|
||||
goto reset;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue