linux/drivers/gpu/drm/amd
David Francis c238bfe0be drm/amd/display: If one stream full updates, full update all planes
[Why]
On some compositors, with two monitors attached, VT terminal
switch can cause a graphical issue by the following means:

There are two streams, one for each monitor. Each stream has one
plane

current state:
	M1:S1->P1
	M2:S2->P2

The user calls for a terminal switch and a commit is made to
change both planes to linear swizzle mode. In atomic check,
a new dc_state is constructed with new planes on each stream

new state:
	M1:S1->P3
	M2:S2->P4

In commit tail, each stream is committed, one at a time. The first
stream (S1) updates properly, triggerring a full update and replacing
the state

current state:
	M1:S1->P3
	M2:S2->P4

The update for S2 comes in, but dc detects that there is no difference
between the stream and plane in the new and current states, and so
triggers a fast update. The fast update does not program swizzle,
so the second monitor is corrupted

[How]
Add a flag to dc_plane_state that forces full updates

When a stream undergoes a full update, set this flag on all changed
planes, then clear it on the current stream

Subsequent streams will get full updates as a result

Signed-off-by: David Francis <David.Francis@amd.com>
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Reviewed-by: Roman Li <Roman.Li@amd.com>
Acked-by: Bhawanpreet Lakha <Bhawanpreet Lakha@amd.com>
Acked-by: Nicholas Kazlauskas <Nicholas.Kazlauskas@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2019-04-14 23:45:43 -05:00
..
acp
amdgpu drm/amdgpu/gmc9: fix VM_L2_CNTL3 programming 2019-04-12 11:24:16 -05:00
amdkfd drm/amdkfd: Add picasso pci id 2019-04-04 10:20:34 -05:00
display drm/amd/display: If one stream full updates, full update all planes 2019-04-14 23:45:43 -05:00
include drm/amdkfd: Optimize out sdma doorbell array in kgd2kfd_shared_resources 2019-02-18 18:00:50 -05:00
lib
powerplay drm/amd/powerplay: fix possible hang with 3+ 4K monitors 2019-03-27 22:32:55 -05:00